{
  "cells": [
    {
      "cell_type": "markdown",
      "source": [
        "# НЕЙРОННЫЕ СЕТИ"
      ],
      "metadata": {
        "id": "buUGKA-Z_8kK"
      }
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "K-BAqDEY4ldv"
      },
      "source": [
        "# Определение тональности текста отзывов [YELP](https://www.yelp.com/dataset)\n",
        "\n",
        "\"Ищете ли вы только что открывшуюся пиццерию или кафе поблизости, Yelp - ваш местный гид по поиску идеального места, где можно поесть, сделать покупки, выпить, расслабиться и поиграть\" - Yelp\n",
        "\n",
        "Набор данных о тональности отзывов Yelp построен с учетом звезд 1 и 2 как отрицательных, а звезд 3 и 4 как положительных. Всего имеется 560 000 обучающих и 38 000 тестовых образцов. Отрицательная тональность относится к классу 1, а положительная — к классу 2."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "metadata": {
        "id": "fN251ib04idq"
      },
      "outputs": [],
      "source": [
        "import pandas as pd\n",
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "%matplotlib inline\n",
        "\n",
        "import warnings\n",
        "warnings.filterwarnings(\"ignore\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "S6itvI2G5H1k"
      },
      "source": [
        "## Загрузка набора данных"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 3,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "TYf3S7he5KIU",
        "outputId": "19c4513b-615e-49f2-c5ff-d505f8b79b2c"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "--2023-06-17 06:20:17--  https://www.dropbox.com/s/ys8k290oev43h8x/yelp_review_polarity_csv.tgz?dl=1\n",
            "Resolving www.dropbox.com (www.dropbox.com)... 162.125.3.18, 2620:100:601d:18::a27d:512\n",
            "Connecting to www.dropbox.com (www.dropbox.com)|162.125.3.18|:443... connected.\n",
            "HTTP request sent, awaiting response... 302 Found\n",
            "Location: /s/dl/ys8k290oev43h8x/yelp_review_polarity_csv.tgz [following]\n",
            "--2023-06-17 06:20:17--  https://www.dropbox.com/s/dl/ys8k290oev43h8x/yelp_review_polarity_csv.tgz\n",
            "Reusing existing connection to www.dropbox.com:443.\n",
            "HTTP request sent, awaiting response... 302 Found\n",
            "Location: https://uc741c913e3c44579c7b028cd4f8.dl.dropboxusercontent.com/cd/0/get/B-LHbblTJffdWA6gIyZzj47pMXR26QUgw4_SJDN38lfbYnvsrdS2YlBCTePjV7cJxPuA1NUvouFynQkFcz2QeudTwRQfdoY9FnDPc-6dLh-h3xRgNn3Xm_gLrsQAt6hrYzo81DJryBXYmesUppRgZEDeJC5eBTsnJXR-nKXXk0D1PlbZ0nhfVrNHx7yedRpHjbw/file?dl=1# [following]\n",
            "--2023-06-17 06:20:18--  https://uc741c913e3c44579c7b028cd4f8.dl.dropboxusercontent.com/cd/0/get/B-LHbblTJffdWA6gIyZzj47pMXR26QUgw4_SJDN38lfbYnvsrdS2YlBCTePjV7cJxPuA1NUvouFynQkFcz2QeudTwRQfdoY9FnDPc-6dLh-h3xRgNn3Xm_gLrsQAt6hrYzo81DJryBXYmesUppRgZEDeJC5eBTsnJXR-nKXXk0D1PlbZ0nhfVrNHx7yedRpHjbw/file?dl=1\n",
            "Resolving uc741c913e3c44579c7b028cd4f8.dl.dropboxusercontent.com (uc741c913e3c44579c7b028cd4f8.dl.dropboxusercontent.com)... 162.125.3.15, 2620:100:6018:15::a27d:30f\n",
            "Connecting to uc741c913e3c44579c7b028cd4f8.dl.dropboxusercontent.com (uc741c913e3c44579c7b028cd4f8.dl.dropboxusercontent.com)|162.125.3.15|:443... connected.\n",
            "HTTP request sent, awaiting response... 200 OK\n",
            "Length: 166373201 (159M) [application/binary]\n",
            "Saving to: ‘yelp_review_polarity_csv.tgz’\n",
            "\n",
            "yelp_review_polarit 100%[===================>] 158.67M   116MB/s    in 1.4s    \n",
            "\n",
            "2023-06-17 06:20:20 (116 MB/s) - ‘yelp_review_polarity_csv.tgz’ saved [166373201/166373201]\n",
            "\n"
          ]
        }
      ],
      "source": [
        "!wget https://www.dropbox.com/s/ys8k290oev43h8x/yelp_review_polarity_csv.tgz?dl=1 -O yelp_review_polarity_csv.tgz"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 4,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "RH95SEXB5R0V",
        "outputId": "cb68d0ab-fa5d-404b-d3bf-fcdae339b4bb"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "yelp_review_polarity_csv/\n",
            "yelp_review_polarity_csv/train.csv\n",
            "yelp_review_polarity_csv/readme.txt\n",
            "yelp_review_polarity_csv/test.csv\n"
          ]
        }
      ],
      "source": [
        "!tar -xvf yelp_review_polarity_csv.tgz"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "9YjyMnJOHoSY"
      },
      "source": [
        "## Загружаем данные в память"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 5,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 423
        },
        "id": "viAteYU0HakW",
        "outputId": "791503f6-8835-4202-ee24-5b9ebae36864"
      },
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "        Class                                             Review\n",
              "0           1  Unfortunately, the frustration of being Dr. Go...\n",
              "1           2  Been going to Dr. Goldberg for over 10 years. ...\n",
              "2           1  I don't know what Dr. Goldberg was like before...\n",
              "3           1  I'm writing this review to give you a heads up...\n",
              "4           2  All the food is great here. But the best thing...\n",
              "...       ...                                                ...\n",
              "559995      2  Ryan was as good as everyone on yelp has claim...\n",
              "559996      2  Professional \\nFriendly\\nOn time AND affordabl...\n",
              "559997      1  Phone calls always go to voicemail and message...\n",
              "559998      1  Looks like all of the good reviews have gone t...\n",
              "559999      2  Ryan Rocks! I called him this morning for some...\n",
              "\n",
              "[560000 rows x 2 columns]"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-10db3b41-8878-4eb1-a6d8-42f2b8d2f9f2\">\n",
              "    <div class=\"colab-df-container\">\n",
              "      <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>Class</th>\n",
              "      <th>Review</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>1</td>\n",
              "      <td>Unfortunately, the frustration of being Dr. Go...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>2</td>\n",
              "      <td>Been going to Dr. Goldberg for over 10 years. ...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>1</td>\n",
              "      <td>I don't know what Dr. Goldberg was like before...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>1</td>\n",
              "      <td>I'm writing this review to give you a heads up...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>2</td>\n",
              "      <td>All the food is great here. But the best thing...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>...</th>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>559995</th>\n",
              "      <td>2</td>\n",
              "      <td>Ryan was as good as everyone on yelp has claim...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>559996</th>\n",
              "      <td>2</td>\n",
              "      <td>Professional \\nFriendly\\nOn time AND affordabl...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>559997</th>\n",
              "      <td>1</td>\n",
              "      <td>Phone calls always go to voicemail and message...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>559998</th>\n",
              "      <td>1</td>\n",
              "      <td>Looks like all of the good reviews have gone t...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>559999</th>\n",
              "      <td>2</td>\n",
              "      <td>Ryan Rocks! I called him this morning for some...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>560000 rows × 2 columns</p>\n",
              "</div>\n",
              "      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-10db3b41-8878-4eb1-a6d8-42f2b8d2f9f2')\"\n",
              "              title=\"Convert this dataframe to an interactive table.\"\n",
              "              style=\"display:none;\">\n",
              "        \n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "       width=\"24px\">\n",
              "    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
              "    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
              "  </svg>\n",
              "      </button>\n",
              "      \n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      flex-wrap:wrap;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "      <script>\n",
              "        const buttonEl =\n",
              "          document.querySelector('#df-10db3b41-8878-4eb1-a6d8-42f2b8d2f9f2 button.colab-df-convert');\n",
              "        buttonEl.style.display =\n",
              "          google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "        async function convertToInteractive(key) {\n",
              "          const element = document.querySelector('#df-10db3b41-8878-4eb1-a6d8-42f2b8d2f9f2');\n",
              "          const dataTable =\n",
              "            await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                     [key], {});\n",
              "          if (!dataTable) return;\n",
              "\n",
              "          const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "            + ' to learn more about interactive tables.';\n",
              "          element.innerHTML = '';\n",
              "          dataTable['output_type'] = 'display_data';\n",
              "          await google.colab.output.renderOutput(dataTable, element);\n",
              "          const docLink = document.createElement('div');\n",
              "          docLink.innerHTML = docLinkHtml;\n",
              "          element.appendChild(docLink);\n",
              "        }\n",
              "      </script>\n",
              "    </div>\n",
              "  </div>\n",
              "  "
            ]
          },
          "metadata": {},
          "execution_count": 5
        }
      ],
      "source": [
        "train = pd.read_csv('yelp_review_polarity_csv/train.csv',\n",
        "                    header=None,\n",
        "                    names=['Class', 'Review'])\n",
        "train"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "gA0GvoWDKulp"
      },
      "source": [
        "Выделяем данные для обучения"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 6,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "xKdpzAQKLUsh",
        "outputId": "ad050f3c-3cc6-4ee1-fa29-4a48f809569f"
      },
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "0    Unfortunately, the frustration of being Dr. Go...\n",
              "1    Been going to Dr. Goldberg for over 10 years. ...\n",
              "2    I don't know what Dr. Goldberg was like before...\n",
              "3    I'm writing this review to give you a heads up...\n",
              "4    All the food is great here. But the best thing...\n",
              "Name: Review, dtype: object"
            ]
          },
          "metadata": {},
          "execution_count": 6
        }
      ],
      "source": [
        "reviews = train['Review']\n",
        "reviews[:5]"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "EyruZkQeLnPa"
      },
      "source": [
        "Выделяем правильные ответы"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 7,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "5t_vJBSyIUoG",
        "outputId": "e6107b03-29c3-4d38-dd22-4a2f24575080"
      },
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "0         0\n",
              "1         1\n",
              "2         0\n",
              "3         0\n",
              "4         1\n",
              "         ..\n",
              "559995    1\n",
              "559996    1\n",
              "559997    0\n",
              "559998    0\n",
              "559999    1\n",
              "Name: Class, Length: 560000, dtype: int64"
            ]
          },
          "metadata": {},
          "execution_count": 7
        }
      ],
      "source": [
        "y_train = train['Class'] - 1\n",
        "y_train"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "781XOtGr-sy3"
      },
      "source": [
        "Тоже самое делаем для тестовых данных"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 8,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "XTrXkLz7R8qq",
        "outputId": "8c688098-782a-4962-b0dd-4430f49e0b6b"
      },
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "0        1\n",
              "1        0\n",
              "2        1\n",
              "3        0\n",
              "4        1\n",
              "        ..\n",
              "37995    0\n",
              "37996    1\n",
              "37997    0\n",
              "37998    0\n",
              "37999    0\n",
              "Name: Class, Length: 38000, dtype: int64"
            ]
          },
          "metadata": {},
          "execution_count": 8
        }
      ],
      "source": [
        "test = pd.read_csv('yelp_review_polarity_csv/test.csv',\n",
        "                    header=None,\n",
        "                    names=['Class', 'Review'])\n",
        "reviews_test = test['Review']\n",
        "y_test = test['Class'] - 1\n",
        "y_test"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "7JuLOCqpLsNL"
      },
      "source": [
        "## Токенизация текста"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "x1pdR21nHouf"
      },
      "source": [
        "Токенизировать - значит, поделить текст на части: слова, ключевые слова, фразы, символы и т.д., иными словами **токены**.\n",
        "\n",
        "Самый наивный способ токенизировать текст - разделить с помощью функции `split()`. Но `split` упускает очень много всего, например, не отделяет пунктуацию от слов. Кроме этого, есть ещё много менее тривиальных проблем, поэтому лучше использовать готовые токенизаторы."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "52JrGZ50P54O"
      },
      "source": [
        "⏰⏰⏰**Ввод данных 1**"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 9,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "QjGL8xjOH37v",
        "outputId": "b8608c1d-12d6-48a7-a7fc-6203e50b79ac"
      },
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "['Если',\n",
              " 'б',\n",
              " 'мне',\n",
              " 'платили',\n",
              " 'каждый',\n",
              " 'раз,',\n",
              " 'Каждый',\n",
              " 'раз,',\n",
              " 'когда',\n",
              " 'я',\n",
              " 'думаю',\n",
              " 'о',\n",
              " 'тебе,',\n",
              " 'Я',\n",
              " 'бы',\n",
              " 'бомжевала',\n",
              " 'возле',\n",
              " 'трасс,',\n",
              " 'Я',\n",
              " 'бы',\n",
              " 'стала',\n",
              " 'самой',\n",
              " 'бедной',\n",
              " 'из',\n",
              " 'людей.']"
            ]
          },
          "metadata": {},
          "execution_count": 9
        }
      ],
      "source": [
        "# введите свою фразу\n",
        "sentence = 'Если б мне платили каждый раз, Каждый раз, когда я думаю о тебе, Я бы бомжевала возле трасс, Я бы стала самой бедной из людей.'\n",
        "sentence.split()"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "O4n3U9Xw-1Pp"
      },
      "source": [
        "Воспользуемя продвинутым готовым токенизатором в библиотеке nltk. В nltk вообще есть довольно много токенизаторов, которые выполняют различные задачи. Более подробно [здесь](https://www.nltk.org/api/nltk.tokenize.html).\n",
        "\n",
        "Примеры использования разлиных имеющихся токенизаторов можно по [ссылке](https://github.com/newtechaudit/NLTK_tokenize/blob/main/NLTK_tokenize.ipynb).\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "GznrRDku_emO"
      },
      "source": [
        "Чтобы использовать токенизатор ```word_tokenize```, нужно сначала скачать данные для nltk о пунктуации и стоп-словах. Это просто требование nltk.\n",
        "\n",
        "Стоп-слова - это слова, которые часто встречаются практически в любом тексте и ничего интересного не говорят о конретном документе. Для модели это просто шум. А шум нужно убирать. По аналогичной причине убирают и пунктуацию."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 10,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "qUiHrwUwK4St",
        "outputId": "284d4d5f-8d98-40d9-bb8b-2cbdf7d5aca1"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "[nltk_data] Downloading package punkt to /root/nltk_data...\n",
            "[nltk_data]   Package punkt is already up-to-date!\n",
            "[nltk_data] Downloading package stopwords to /root/nltk_data...\n",
            "[nltk_data]   Package stopwords is already up-to-date!\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "True"
            ]
          },
          "metadata": {},
          "execution_count": 10
        }
      ],
      "source": [
        "import nltk # библиотека nltk\n",
        "from nltk.tokenize import word_tokenize # готовый токенизатор библиотеки nltk\n",
        "nltk.download('punkt')\n",
        "nltk.download('stopwords')"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 11,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "pXEobeDpK6ty",
        "outputId": "4d015173-7e7a-47ca-a3d3-ecac21d9381e"
      },
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "['Если',\n",
              " 'б',\n",
              " 'мне',\n",
              " 'платили',\n",
              " 'каждый',\n",
              " 'раз',\n",
              " ',',\n",
              " 'Каждый',\n",
              " 'раз',\n",
              " ',',\n",
              " 'когда',\n",
              " 'я',\n",
              " 'думаю',\n",
              " 'о',\n",
              " 'тебе',\n",
              " ',',\n",
              " 'Я',\n",
              " 'бы',\n",
              " 'бомжевала',\n",
              " 'возле',\n",
              " 'трасс',\n",
              " ',',\n",
              " 'Я',\n",
              " 'бы',\n",
              " 'стала',\n",
              " 'самой',\n",
              " 'бедной',\n",
              " 'из',\n",
              " 'людей',\n",
              " '.']"
            ]
          },
          "metadata": {},
          "execution_count": 11
        }
      ],
      "source": [
        "word_tokenize(sentence)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 12,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "vv4JMEZ8K60k",
        "outputId": "5f023904-d587-44c8-a1c6-25609d6d8650"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "['i', 'me', 'my', 'myself', 'we', 'our', 'ours', 'ourselves', 'you', \"you're\", \"you've\", \"you'll\", \"you'd\", 'your', 'yours', 'yourself', 'yourselves', 'he', 'him', 'his', 'himself', 'she', \"she's\", 'her', 'hers', 'herself', 'it', \"it's\", 'its', 'itself', 'they', 'them', 'their', 'theirs', 'themselves', 'what', 'which', 'who', 'whom', 'this', 'that', \"that'll\", 'these', 'those', 'am', 'is', 'are', 'was', 'were', 'be', 'been', 'being', 'have', 'has', 'had', 'having', 'do', 'does', 'did', 'doing', 'a', 'an', 'the', 'and', 'but', 'if', 'or', 'because', 'as', 'until', 'while', 'of', 'at', 'by', 'for', 'with', 'about', 'against', 'between', 'into', 'through', 'during', 'before', 'after', 'above', 'below', 'to', 'from', 'up', 'down', 'in', 'out', 'on', 'off', 'over', 'under', 'again', 'further', 'then', 'once', 'here', 'there', 'when', 'where', 'why', 'how', 'all', 'any', 'both', 'each', 'few', 'more', 'most', 'other', 'some', 'such', 'no', 'nor', 'not', 'only', 'own', 'same', 'so', 'than', 'too', 'very', 's', 't', 'can', 'will', 'just', 'don', \"don't\", 'should', \"should've\", 'now', 'd', 'll', 'm', 'o', 're', 've', 'y', 'ain', 'aren', \"aren't\", 'couldn', \"couldn't\", 'didn', \"didn't\", 'doesn', \"doesn't\", 'hadn', \"hadn't\", 'hasn', \"hasn't\", 'haven', \"haven't\", 'isn', \"isn't\", 'ma', 'mightn', \"mightn't\", 'mustn', \"mustn't\", 'needn', \"needn't\", 'shan', \"shan't\", 'shouldn', \"shouldn't\", 'wasn', \"wasn't\", 'weren', \"weren't\", 'won', \"won't\", 'wouldn', \"wouldn't\"]\n",
            "['и', 'в', 'во', 'не', 'что', 'он', 'на', 'я', 'с', 'со', 'как', 'а', 'то', 'все', 'она', 'так', 'его', 'но', 'да', 'ты', 'к', 'у', 'же', 'вы', 'за', 'бы', 'по', 'только', 'ее', 'мне', 'было', 'вот', 'от', 'меня', 'еще', 'нет', 'о', 'из', 'ему', 'теперь', 'когда', 'даже', 'ну', 'вдруг', 'ли', 'если', 'уже', 'или', 'ни', 'быть', 'был', 'него', 'до', 'вас', 'нибудь', 'опять', 'уж', 'вам', 'ведь', 'там', 'потом', 'себя', 'ничего', 'ей', 'может', 'они', 'тут', 'где', 'есть', 'надо', 'ней', 'для', 'мы', 'тебя', 'их', 'чем', 'была', 'сам', 'чтоб', 'без', 'будто', 'чего', 'раз', 'тоже', 'себе', 'под', 'будет', 'ж', 'тогда', 'кто', 'этот', 'того', 'потому', 'этого', 'какой', 'совсем', 'ним', 'здесь', 'этом', 'один', 'почти', 'мой', 'тем', 'чтобы', 'нее', 'сейчас', 'были', 'куда', 'зачем', 'всех', 'никогда', 'можно', 'при', 'наконец', 'два', 'об', 'другой', 'хоть', 'после', 'над', 'больше', 'тот', 'через', 'эти', 'нас', 'про', 'всего', 'них', 'какая', 'много', 'разве', 'три', 'эту', 'моя', 'впрочем', 'хорошо', 'свою', 'этой', 'перед', 'иногда', 'лучше', 'чуть', 'том', 'нельзя', 'такой', 'им', 'более', 'всегда', 'конечно', 'всю', 'между']\n"
          ]
        }
      ],
      "source": [
        "# импортируем стоп-слова из библиотеки nltk\n",
        "from nltk.corpus import stopwords\n",
        "\n",
        "# посмотрим на стоп-слова\n",
        "print(stopwords.words('english'))\n",
        "print(stopwords.words('russian'))"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "lwSdxcexQHIu"
      },
      "source": [
        "⏰⏰⏰**Ввод данных 2**"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 13,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "BHMuu_HBK63J",
        "outputId": "d32a6d81-034e-4bb0-b172-a590d57984b2"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "['!', '\"', '#', '$', '%', '&', \"'\", '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '@', '[', '\\\\', ']', '^', '_', '`', '{', '|', '}', '~']\n",
            "[\"you've\", \"you'll\", \"you'd\", 'your', 'yours', 'yourself', 'yourselves', 'he', 'him', 'his', 'himself', 'she', \"she's\", 'her', 'hers', 'herself', 'it', \"it's\", 'its', 'itself', 'they', 'them', 'their', 'theirs', 'themselves', 'what', 'which', 'who', 'whom', 'this', 'that', \"that'll\", 'these', 'those', 'am', 'is', 'are', 'was', 'were', 'be', 'been', 'being', 'have', 'has', 'had', 'having', 'do', 'does', 'did', 'doing', 'a', 'an', 'the', 'and', 'but', 'if', 'or', 'because', 'as', 'until', 'while', 'of', 'at', 'by', 'for', 'with', 'about', 'against', 'between', 'into', 'through', 'during', 'before', 'after', 'above', 'below', 'to', 'from', 'up', 'down', 'in', 'out', 'on', 'off', 'over', 'under', 'again', 'further', 'then', 'once', 'here', 'there', 'when', 'where', 'why', 'how', 'all', 'any', 'both', 'each', 'few', 'more', 'most', 'other', 'some', 'such', 'no', 'nor', 'not', 'only', 'own', 'same', 'so', 'than', 'too', 'very', 's', 't', 'can', 'will', 'just', 'don', \"don't\", 'should', \"should've\", 'now', 'd', 'll', 'm', 'o', 're', 've', 'y', 'ain', 'aren', \"aren't\", 'couldn', \"couldn't\", 'didn', \"didn't\", 'doesn', \"doesn't\", 'hadn', \"hadn't\", 'hasn', \"hasn't\", 'haven', \"haven't\", 'isn', \"isn't\", 'ma', 'mightn', \"mightn't\", 'mustn', \"mustn't\", 'needn', \"needn't\", 'shan', \"shan't\", 'shouldn', \"shouldn't\", 'wasn', \"wasn't\", 'weren', \"weren't\", 'won', \"won't\", 'wouldn', \"wouldn't\"]\n"
          ]
        }
      ],
      "source": [
        "# попробовать разный noise\n",
        "from string import punctuation\n",
        "\n",
        "print(list(punctuation))\n",
        "\n",
        "stop = stopwords.words('english')\n",
        "\n",
        "del stop[0:10]\n",
        "\n",
        "print(stop)\n",
        "noise = stop + ['!', '\"', '#', '$', '%', '&', \"'\", '(', ')', '*', '+', ',', '-', '.']"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "tx1XqngZVKyU"
      },
      "source": [
        "# Векторизаторы\n",
        "\n",
        "Векторизатор преобразует слово или набор слов в числовой вектор, понятный алгоритму машинного обучения, который привык работать с числовыми табличными данными."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "6ofJ6YaFTWaP"
      },
      "source": [
        "## Мешок слов\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 14,
      "metadata": {
        "id": "v3suwtiNMH-e"
      },
      "outputs": [],
      "source": [
        "from sklearn.linear_model import LogisticRegression # можно заменить на любимый классификатор\n",
        "from sklearn.feature_extraction.text import CountVectorizer # модель \"мешка слов\""
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "X07DKVAsMQ_p"
      },
      "source": [
        "Самый простой способ извлечь признаки из текстовых данных -- векторизаторы: `CountVectorizer` и `TfidfVectorizer`\n",
        "\n",
        "Объект `CountVectorizer` делает следующую вещь:\n",
        "* строит для каждого документа (каждой пришедшей ему строки) вектор размерности `n`, где `n` -- количество слов или n-грам во всём корпусе\n",
        "* заполняет каждый i-тый элемент количеством вхождений слова в данный документ\n",
        "\n",
        "<a href=\"https://drive.google.com/uc?id=1ukv-FTj0jeVdcgVlOaNBocUfNuYGGVZg\n",
        "\" target=\"_blank\"><img src=\"https://drive.google.com/uc?id=1jHmkrGZTMawM46Yzxh243Ur1y5pYKzrl\"\n",
        "alt=\"IMAGE ALT TEXT HERE\" width=\"600\" border=\"0\" /></a>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "XkgRppNvIeB9"
      },
      "source": [
        "Самые мелкие структуры языка, с которыми мы работаем, называются **n-граммами**.\n",
        "У n-граммы есть параметр n - количество слов, которые попадают в такое представление текста.\n",
        "* Если n = 1 - то мы смотрим на то, сколько раз каждое слово встретилось в тексте. Получаем _униграммы_\n",
        "* Если n = 2 - то мы смотрим на то, сколько раз каждая пара подряд идущих слов, встретилась в тексте. Получаем _биграммы_"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "XyIvp-Z9MWLG"
      },
      "source": [
        "На рисунке пример векторизации для униграмм, но можно использовать любые n-граммы. Для этого у объекта ```CountVectorizer()``` есть параметр **ngram_range**, который отвечает за то, какие n-граммы мы используем в качестве признаков:<br/>\n",
        "ngram_range=(1, 1) -- униграммы<br/>\n",
        "ngram_range=(3, 3) -- триграммы<br/>\n",
        "ngram_range=(1, 3) -- униграммы, биграммы и триграммы."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "OASTb7lqH-8p"
      },
      "source": [
        "Собирем векторизатор, передав ему на вход:\n",
        "* какие n-граммы нам нужны, параметр **ngram_range**;\n",
        "* какой токенизатор мы используем, параметр **tokenizer**;\n",
        "* какие у нас стоп-слова, параметр **stop_words**."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 15,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Ul9QzwKfMIHA",
        "outputId": "f6798199-143d-4f51-a8b6-9dc55992fa88"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "CPU times: user 9min 56s, sys: 2.13 s, total: 9min 58s\n",
            "Wall time: 10min 3s\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[('unfortunately', 599590),\n",
              " ('frustration', 269464),\n",
              " ('dr.', 218245),\n",
              " ('goldberg', 281342),\n",
              " (\"'s\", 4373),\n",
              " ('patient', 435057),\n",
              " ('repeat', 481277),\n",
              " ('experience', 242028),\n",
              " ('i', 314513),\n",
              " (\"'ve\", 5487)]"
            ]
          },
          "metadata": {},
          "execution_count": 15
        }
      ],
      "source": [
        "vectorizer = CountVectorizer(ngram_range=(1, 1),\n",
        "                             tokenizer=word_tokenize,\n",
        "                             stop_words=noise)\n",
        "%time vectorized_x_train = vectorizer.fit_transform(reviews)\n",
        "list(vectorizer.vocabulary_.items())[:10]"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 16,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "7xb2iklfOF0m",
        "outputId": "4d69c62e-f8a9-404d-ba26-67ed2d54ba5e"
      },
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "(560000, 643271)"
            ]
          },
          "metadata": {},
          "execution_count": 16
        }
      ],
      "source": [
        "vectorized_x_train.shape"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 17,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 74
        },
        "id": "NBKxLFhNMIJl",
        "outputId": "892416ab-c546-4378-e1fe-b69138caf969"
      },
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "LogisticRegression(random_state=19, solver='saga')"
            ],
            "text/html": [
              "<style>#sk-container-id-1 {color: black;background-color: white;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LogisticRegression(random_state=19, solver=&#x27;saga&#x27;)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">LogisticRegression</label><div class=\"sk-toggleable__content\"><pre>LogisticRegression(random_state=19, solver=&#x27;saga&#x27;)</pre></div></div></div></div></div>"
            ]
          },
          "metadata": {},
          "execution_count": 17
        }
      ],
      "source": [
        "clf = LogisticRegression(random_state=19, solver='saga') # фиксируем random_state для воспроизводимости результатов\n",
        "clf.fit(vectorized_x_train, y_train)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 18,
      "metadata": {
        "id": "mHD-QVyoMIMT"
      },
      "outputs": [],
      "source": [
        "vectorized_x_test = vectorizer.transform(reviews_test)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 19,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "AgmhAdaSMIPA",
        "outputId": "5e1a6469-79ce-44e0-b1d0-17a5b79120d4"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "              precision    recall  f1-score   support\n",
            "\n",
            "           0       0.93      0.92      0.92     19000\n",
            "           1       0.92      0.93      0.92     19000\n",
            "\n",
            "    accuracy                           0.92     38000\n",
            "   macro avg       0.92      0.92      0.92     38000\n",
            "weighted avg       0.92      0.92      0.92     38000\n",
            "\n"
          ]
        }
      ],
      "source": [
        "from sklearn.metrics import classification_report\n",
        "pred = clf.predict(vectorized_x_test)\n",
        "print(classification_report(y_test, pred))"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "I4CLrhvaUkl4"
      },
      "source": [
        "## TF-IDF"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "mxioHPT8U9HG"
      },
      "source": [
        "`TfidfVectorizer` делает то же, что и `CountVectorizer`, но в качестве значений выдает **tf-idf** каждого слова.\n",
        "\n",
        "Как считается tf-idf:\n",
        "\n",
        "**TF (term frequency)** –  отношение числа вхождений некоторого слова к общему числу слов документа. Таким образом, оценивается важность слова t в пределах отдельного документа.:\n",
        "\n",
        "$$ TF(t,d) = \\frac{n_{t}}{\\sum_k n_{k}} $$\n",
        "\n",
        "$$or$$\n",
        "\n",
        "$$T F(t, d)=\\frac{\\text { Term t frequency in document } d}{\\text { Total words in document d }}$$\n",
        "\n",
        "**IDF (inverse document frequency)** – инверсия частоты, с которой некоторое слово встречается в документах коллекции. Учёт IDF уменьшает вес широкоупотребительных слов.\n",
        "\n",
        "$$ IDF(t, D) = \\mbox{log} \\frac{|D|}{|{d : t \\in d}|} $$\n",
        "\n",
        "$$or$$\n",
        "\n",
        "$$ IDF(t, D)=\\log \\left(\\frac{\\text { Total documents D}}{\\text { documents with term t }}\\right) $$\n",
        "\n",
        "Перемножаем их:\n",
        "$$TF-IDF(t, d, D) = TF(t,d) \\times IDF(i, D)$$\n",
        "\n",
        "TF-IDF - статистическая мера, используемая для оценки важности слова в контексте документа, являющегося частью коллекции документов или корпуса. Вес некоторого слова пропорционален частоте употребления этого слова в документе и обратно пропорционален частоте употребления слова во всех документах коллекции.\n",
        "\n",
        "Сакральный смысл: cлова, неважные для вообще всех документов, например, предлоги или междометия — получат очень низкий вес TF-IDF (потому что часто встречаются во всех-всех документах), а важные — высокий."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 20,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "5m0a-WVpMIUf",
        "outputId": "0d5db2fa-d24f-4020-bfb5-90393a3b5ae6"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "CPU times: user 10min 33s, sys: 2.75 s, total: 10min 36s\n",
            "Wall time: 10min 39s\n",
            "              precision    recall  f1-score   support\n",
            "\n",
            "           0       0.94      0.94      0.94     19000\n",
            "           1       0.94      0.94      0.94     19000\n",
            "\n",
            "    accuracy                           0.94     38000\n",
            "   macro avg       0.94      0.94      0.94     38000\n",
            "weighted avg       0.94      0.94      0.94     38000\n",
            "\n"
          ]
        }
      ],
      "source": [
        "from sklearn.feature_extraction.text import TfidfVectorizer\n",
        "tfidf_vectorizer = TfidfVectorizer(ngram_range=(1, 1),\n",
        "                                   tokenizer=word_tokenize)\n",
        "\n",
        "# обучаем его и сразу применяем к x_train\n",
        "%time tfidf_vectorized_x_train = tfidf_vectorizer.fit_transform(reviews)\n",
        "\n",
        "# инициализируем и обучаем классификатор\n",
        "clf = LogisticRegression(random_state=19, solver='saga')\n",
        "clf.fit(tfidf_vectorized_x_train, y_train)\n",
        "\n",
        "# применяем обученный векторизатор к тестовым данным\n",
        "tfidf_vectorized_x_test = tfidf_vectorizer.transform(reviews_test)\n",
        "\n",
        "# получаем предсказания и выводим информацию о качестве\n",
        "pred = clf.predict(tfidf_vectorized_x_test)\n",
        "print(classification_report(y_test, pred))"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 21,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "EA3a-ukEMIhj",
        "outputId": "dbf777ae-ee17-4e73-bcdf-e695569d42ef"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "              precision    recall  f1-score   support\n",
            "\n",
            "           0       0.51      0.70      0.59     19000\n",
            "           1       0.51      0.31      0.39     19000\n",
            "\n",
            "    accuracy                           0.51     38000\n",
            "   macro avg       0.51      0.51      0.49     38000\n",
            "weighted avg       0.51      0.51      0.49     38000\n",
            "\n"
          ]
        }
      ],
      "source": [
        "cool_token = ')'\n",
        "pred = [1 if cool_token in review else 0 for review in reviews_test]\n",
        "print(classification_report(y_test, pred))"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "z_l1xauoeije"
      },
      "source": [
        "# Embeddings\n",
        "\n",
        "Семантическое представление слова, или семантический вектор слова (word embedding) – это представление слова как точки в многомерном пространстве. Данный тип вектора еще называют плотным, так как он имеет очень компактное представление (для решения многих задач хватает вектора длиной 300 элементов). При правильном построении алгоритма и достаточно большом корпусе слов для обучения семантически близкие слова должны лежать близко в N-мерном пространстве, в котором представляется вектор слова."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "xS0sHttpKnLe"
      },
      "source": [
        "Подобные представления (Embedding) могут строиться в процессе обучения нейронной сети для решения конкретной задачи, для этого применяется специальный слой Embedding."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 22,
      "metadata": {
        "id": "UHUPZq_KPlim"
      },
      "outputs": [],
      "source": [
        "from tensorflow.keras.models import Sequential\n",
        "from tensorflow.keras.layers import Dense, Embedding, Flatten, Dropout\n",
        "from tensorflow.keras import utils\n",
        "from tensorflow.keras.preprocessing.sequence import pad_sequences\n",
        "from tensorflow.keras.preprocessing.text import Tokenizer"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 23,
      "metadata": {
        "id": "APKByKYE8yGG"
      },
      "outputs": [],
      "source": [
        "num_words = 10000 # ограничение длины используемого словаря\n",
        "max_review_len = 100 # ограничение длины отзыва"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "DTtBSvAfMusM"
      },
      "source": [
        "Будем использовать токенизатор Keras, он считается проще и поэтому быстрее. Создадим и обучим токенизатор."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 24,
      "metadata": {
        "id": "x-AUMyjMLw5T"
      },
      "outputs": [],
      "source": [
        "tokenizer = Tokenizer(num_words=num_words)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 25,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "RfsqlGJZM7HR",
        "outputId": "585626c5-ba93-4522-8b51-eaa6606515bb"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "CPU times: user 52.7 s, sys: 149 ms, total: 52.9 s\n",
            "Wall time: 53 s\n"
          ]
        }
      ],
      "source": [
        "%time tokenizer.fit_on_texts(reviews)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "s_nyPsVLNW-f"
      },
      "source": [
        "Преобразуем отзывы Yelp в числовое представление"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 26,
      "metadata": {
        "id": "bMZ6e-zEJHr1"
      },
      "outputs": [],
      "source": [
        "sequences = tokenizer.texts_to_sequences(reviews)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 27,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "xIUJvjguN0S0",
        "outputId": "fed07977-728e-41a3-9193-79704029bd3a"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Very disappointed in the customer service. We ordered Reuben's  and wanted coleslaw instead of kraut. They charged us $3.00 for the coleslaw. We will not be back . The iced tea is also terrible tasting.\n",
            "[42, 337, 10, 1, 218, 52, 15, 89, 2, 192, 2915, 389, 7, 19, 737, 70, 164, 591, 9, 1, 2915, 15, 66, 22, 30, 54, 1, 1327, 525, 11, 84, 462, 928]\n"
          ]
        }
      ],
      "source": [
        "index = 15\n",
        "print(reviews[index])\n",
        "print(sequences[index])"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 28,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "sQn0O5kBtmyJ",
        "outputId": "9f041602-b1c8-48ea-feb4-dc88261bc807"
      },
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "2915"
            ]
          },
          "metadata": {},
          "execution_count": 28
        }
      ],
      "source": [
        "tokenizer.word_index['coleslaw']"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "neSZfrw3OYPx"
      },
      "source": [
        "Ограничиваем длину отзывов"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 29,
      "metadata": {
        "id": "ZGLpcETkN3ex"
      },
      "outputs": [],
      "source": [
        "x_train = pad_sequences(sequences, maxlen=max_review_len)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 30,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "mPW1VACmOrrm",
        "outputId": "c9716c62-f726-42fb-8b81-ff120534896b"
      },
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([[   7,    1,  137,  112,   24,   18,   27,  189,   80, 3128,   10,\n",
              "        2636,   34, 1416,  462,  129,    8,  519,   13,  177,  129,  803,\n",
              "          88, 3812,    1,  446,    8,  392,  841,  115,  360,    7, 4136,\n",
              "        1438,    4,   43,   59, 1266,  118,   95,   46,    9,   13,   49,\n",
              "        1687,    4,  418,   18,    8,    3,   23,  563,  178,   16,  460,\n",
              "          18,  189,   80, 3128,    2,    3,   40,   78,   43,    8,   20,\n",
              "          23,  644, 1343,   20,   23, 3252,   18, 2921,  637,  227,  430,\n",
              "         476, 4312,    1,  446,   63,    2,   22,  215,    1,   63,   18,\n",
              "        2269,   13,    3,  249,   13,    3,   23,    4,  163,  939,  115,\n",
              "         237],\n",
              "       [   0,    0,    0,    0,    0,    0,    0,    0,    0,   69,  116,\n",
              "           4,  939,    9,   94,  201,  274,    3,  142,    3,    6,   44,\n",
              "           7,  177, 2084, 3252,   47,   62,  422,   25, 1334,   69,   51,\n",
              "          94,    1,  274,    2,   11,   61,   37,   56,    1,  219, 1403,\n",
              "           8,   11,   72,    7,  229,   22,   14,  165, 3092,  939,   13,\n",
              "           3,  266,   36,    3,   23,   62,   37,  522,   18,   20,    2,\n",
              "          11,   42, 1665,    2, 3122,   62,  398, 2902,    2, 2436,   37,\n",
              "           1,  146, 1047,   42, 3518,    2, 1687,    4,   30,  592,   10,\n",
              "           1, 7046,   21,  193, 3940,    7,   71, 2921, 1654,    2,   71,\n",
              "         628]], dtype=int32)"
            ]
          },
          "metadata": {},
          "execution_count": 30
        }
      ],
      "source": [
        "x_train[:2]"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "QtH_5cZ0miWY"
      },
      "source": [
        "## Обучим нейронную сеть с коротким векторным представлением"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "914DPE9VKz5W"
      },
      "source": [
        "Расмсмотрим новый вид слоя нейронной сети Embedding, его параметры:\n",
        "\n",
        "`input_dim` – длина словаря (количество уникальных слов в корпусе документов);\n",
        "\n",
        "`output_dim` – размерность плотного вектора на выходе из слоя Embedding;\n",
        "\n",
        "`input_length` – длина входной последовательности."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Q63sM_inQ9-N"
      },
      "source": [
        "⏰⏰⏰**Ввод данных 3**"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 31,
      "metadata": {
        "id": "EkAetQKpfFPX"
      },
      "outputs": [],
      "source": [
        "# Поменяйте параметры сети (например, dropout) и/или архитектуру - можно добавить слой, количество эпох и/или batch_size\n",
        "model = Sequential()\n",
        "model.add(Embedding(input_dim=num_words, output_dim=2, input_length=max_review_len))\n",
        "model.add(Dropout(0.25))\n",
        "model.add(Flatten())\n",
        "model.add(Dense(1, activation='sigmoid'))"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 32,
      "metadata": {
        "id": "UkLIeSr9fFSg"
      },
      "outputs": [],
      "source": [
        "model.compile(optimizer='adam',\n",
        "              loss='binary_crossentropy',\n",
        "              metrics=['accuracy'])"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 33,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "r236V_4ifFV8",
        "outputId": "e13efa8b-3515-4df1-9b07-207e5c93a14f"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Epoch 1/10\n",
            "1969/1969 [==============================] - 79s 39ms/step - loss: 0.3239 - accuracy: 0.8604 - val_loss: 0.1842 - val_accuracy: 0.9323\n",
            "Epoch 2/10\n",
            "1969/1969 [==============================] - 17s 9ms/step - loss: 0.2316 - accuracy: 0.9084 - val_loss: 0.1757 - val_accuracy: 0.9338\n",
            "Epoch 3/10\n",
            "1969/1969 [==============================] - 12s 6ms/step - loss: 0.2251 - accuracy: 0.9114 - val_loss: 0.1745 - val_accuracy: 0.9345\n",
            "Epoch 4/10\n",
            "1969/1969 [==============================] - 12s 6ms/step - loss: 0.2228 - accuracy: 0.9119 - val_loss: 0.1734 - val_accuracy: 0.9342\n",
            "Epoch 5/10\n",
            "1969/1969 [==============================] - 11s 6ms/step - loss: 0.2220 - accuracy: 0.9126 - val_loss: 0.1738 - val_accuracy: 0.9346\n",
            "Epoch 6/10\n",
            "1969/1969 [==============================] - 12s 6ms/step - loss: 0.2211 - accuracy: 0.9129 - val_loss: 0.1741 - val_accuracy: 0.9343\n",
            "Epoch 7/10\n",
            "1969/1969 [==============================] - 12s 6ms/step - loss: 0.2208 - accuracy: 0.9133 - val_loss: 0.1739 - val_accuracy: 0.9339\n",
            "Epoch 8/10\n",
            "1969/1969 [==============================] - 11s 6ms/step - loss: 0.2206 - accuracy: 0.9134 - val_loss: 0.1742 - val_accuracy: 0.9340\n",
            "Epoch 9/10\n",
            "1969/1969 [==============================] - 11s 6ms/step - loss: 0.2202 - accuracy: 0.9133 - val_loss: 0.1743 - val_accuracy: 0.9339\n",
            "Epoch 10/10\n",
            "1969/1969 [==============================] - 12s 6ms/step - loss: 0.2200 - accuracy: 0.9132 - val_loss: 0.1744 - val_accuracy: 0.9338\n"
          ]
        }
      ],
      "source": [
        "history = model.fit(x_train,\n",
        "                    y_train,\n",
        "                    epochs=10,\n",
        "                    batch_size=256,\n",
        "                    validation_split=0.1)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 34,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 449
        },
        "id": "mdkqhEjzfJ_T",
        "outputId": "46b39dfa-af8b-461d-c37c-d16bfee288c8"
      },
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {}
        }
      ],
      "source": [
        "plt.plot(history.history['accuracy'],\n",
        "         label='Доля верных ответов на обучающем наборе')\n",
        "plt.plot(history.history['val_accuracy'],\n",
        "         label='Доля верных ответов на проверочном наборе')\n",
        "plt.xlabel('Эпоха обучения')\n",
        "plt.ylabel('Доля верных ответов')\n",
        "plt.legend()\n",
        "plt.show()"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 35,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "sPbtvmm9fKB4",
        "outputId": "8ed5f9ba-bd5a-4bc4-fd26-0dc67774a4f7"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "1188/1188 [==============================] - 4s 3ms/step - loss: 0.2014 - accuracy: 0.9228\n"
          ]
        }
      ],
      "source": [
        "test_sequences = tokenizer.texts_to_sequences(test['Review'])\n",
        "x_test = pad_sequences(test_sequences, maxlen=max_review_len)\n",
        "\n",
        "scores = model.evaluate(x_test, y_test, verbose=1)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "K0sTFo48h6dZ"
      },
      "source": [
        "## Посмотрим на плотное векторное представление слов (embeddings)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 36,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "0Pe-vdZihxTi",
        "outputId": "a7915a09-506f-46da-ab91-cc883d2f4123"
      },
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([[ 0.0009134 ,  0.00367958],\n",
              "       [-0.00067676, -0.01163552],\n",
              "       [ 0.05685791,  0.05440509],\n",
              "       [ 0.04018993,  0.03629873],\n",
              "       [-0.03934397, -0.03131473]], dtype=float32)"
            ]
          },
          "metadata": {},
          "execution_count": 36
        }
      ],
      "source": [
        "embedding_matrix = model.layers[0].get_weights()[0]\n",
        "embedding_matrix[:5]"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 37,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "aWfS-72_hxbB",
        "outputId": "37a0a7f3-8ae9-4509-d121-28642ff53b7d"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Номер слова 2915\n",
            "Вектор для слова [-0.02130635  0.02262919]\n"
          ]
        }
      ],
      "source": [
        "word = 'coleslaw' # салат из капусты\n",
        "word_number = tokenizer.word_index[word]\n",
        "print('Номер слова', word_number)\n",
        "print('Вектор для слова', embedding_matrix[word_number])"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 38,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 447
        },
        "id": "TX7DhayhfFYl",
        "outputId": "2ee7accd-7359-4443-bdbe-4888e1613353"
      },
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.collections.PathCollection at 0x7f7c1d4992a0>"
            ]
          },
          "metadata": {},
          "execution_count": 38
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {}
        }
      ],
      "source": [
        "plt.scatter(embedding_matrix[:,0], embedding_matrix[:,1])"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "p6f9o7vgRWkQ"
      },
      "source": [
        "⏰⏰⏰**Ввод данных 4**"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 39,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "VHWppTDHkUVn",
        "outputId": "7d0b337d-2633-4113-ac3a-c11182963298"
      },
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[51, 388, 34, 143, 692, 3111, 462, 633]"
            ]
          },
          "metadata": {},
          "execution_count": 39
        }
      ],
      "source": [
        "# используйте свой набор слов: измените слова, имеющие эмоциональный окрас и добавьте нейтральные слова\n",
        "review_word = ['great',  'perfect', 'good',\n",
        "          'bad', 'awful', 'unpleasant', 'terrible', 'dirty']\n",
        "enc_review = []\n",
        "for word in review_word:\n",
        "    enc_review.append(tokenizer.word_index[word])\n",
        "enc_review"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 40,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "4n-W9oLBkUYK",
        "outputId": "117407c3-a3b8-4712-e5aa-f02496520667"
      },
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([[ 0.58859384,  0.55957466],\n",
              "       [ 0.82198715,  0.93282163],\n",
              "       [ 0.2361844 ,  0.22541954],\n",
              "       [-0.26061684, -0.20652726],\n",
              "       [-1.1469307 , -1.0908444 ],\n",
              "       [-0.6101918 , -0.73023176],\n",
              "       [-1.1672335 , -1.1332078 ],\n",
              "       [-0.67581695, -0.6945635 ]], dtype=float32)"
            ]
          },
          "metadata": {},
          "execution_count": 40
        }
      ],
      "source": [
        "review_vectors = embedding_matrix[enc_review]\n",
        "review_vectors"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ErPYK-2vmcJb"
      },
      "source": [
        "Визуализация обученного плотного векторного представления слов, по которым можно определить эмоциональную окраску текста"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 41,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 436
        },
        "id": "WSEry1k0kUam",
        "outputId": "57a1f721-5365-4e5e-eff1-69fd237dd31f"
      },
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "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xpbzaMunpvx+MyUKAIBFffTRR5KkF154Qdddd52jPCAgQKNHjy7xda+99po8PT2dyj744ANlZ2crPj5eQUFBTtsGDRqkjh07at68eU7lISEhRdoOCAjQwIEDlZaWpn379pX5mFA+TIkCAGBRW7dulSR169atyLbw8PBiX+Ph4aG2bdsWKU9JSZEkbdiwQenp6UW2nz59WllZWcrKypKfn58kaffu3YqPj9eqVat04MAB5eXlOb3m4MGDRcIfKgeBDQAAC8kvMPXdnuPKzDmtzGMn5OLi4ghQFyo8L+1iDRs2lGEYRcqPHz8uSfrHP/5xyf3n5ubKz89Pv/zyi8LCwpSdna2oqCjddddd8vX1lYuLi5KSkpScnFwkwKHyENgAALCIpamHNGnRdh2yn5YkHc1zUUFBgT75dpsGdW/jVPfIkSPFtlFcWJMkX19fSdJPP/2kNm3aFFvnQm+88YZ+++03ffjhhxo6dKjTtscff1zJycmXbQMVh3PYAACwgKWphzTyo02OsCZJtRqcP4fs6TfnaWnqIaf669atK1P7t9xyiySVuLr0YoXTpoUrQQuZpqm1a9cWqe/q6ipJys/PL1O/UDoENgAAqll+galJi7bLvKjcq3WkJMm+bp5iv9is/ILzNQ4fPqy33nqrTPt4+OGH5ePjo7/+9a/atm1bke2nTp1ynOcmyXFu2po1a5zqvfrqq0pNTS3y+nr16kmSMjIyytQvlA5TogAAVLPv9hx3Glkr5BncQdfdGKFT25O16Y1H9dCv96i+p4s+/fRT3XLLLVq0aJFcXEo39tKgQQPNnTtX999/v9q3b6/evXvrhhtuUF5envbu3avk5GR17dpVS5culXR+2nPWrFkaOHCgHnjgAdWvX18pKSnatGmT+vbtqyVLlji1f8MNN6hx48aaN2+e3N3ddf3118swDD311FOy2WxX/ibVcAQ2AACqWWZO0bBWyK/vGNnrByr3xxX67IOZahp4vZ555hndfvvtWrRokePctNLo27evNm/erL///e/65ptvtGLFCnl5een666/Xww8/7HSu2k033aTly5frueee0xdffCFXV1d17dpVa9eu1VdffVUksLm6uuqLL77QuHHjNHfuXOXk5EiShg4dSmCrAIZpmhePwNZI2dnZstlsstvtZfqPHwCAK7U+/ZgGz0i5bL25w7vo1ub1JUkz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YHEENgAAAIsjsAEAAFgcgQ2ApSUlJckwDMXFxVX5voODgxUcHFzl+wWAixHYAAAALI7ABgAAYHEENgAAAIsjsAG4aqxZs0aRkZHy8fFRnTp1NHDgQP3yyy9OdRITE/XII4+oVatW8vb2lre3tzp16qR33323xHYXLlyozp07y9PTU40aNdLw4cP122+/VfbhAECpEdgAXBVSUlJ0++23y2az6amnnlJERIS+/PJLde3aVbt373bUmzx5slavXq3OnTtr1KhRGjp0qLKysjRixAiNHTu2SLsffPCBBgwYoF27dumhhx5STEyM1q5dq549e+rMmTNVeYgAUCLDNE2zujthBdnZ2bLZbLLb7fL19a3u7gD4j6SkJEVFRUmS/vWvf2nEiBGObdOnT9fjjz+ufv36adGiRZKkPXv2KCQkxKmNc+fOqU+fPlq1apV2796tpk2bSjr/vQ8MDFR+fr42bdqkli1bSpLOnj2rnj17avXq1QoKCtLevXur4EgBlEdN+f1mhA3AVaFly5YaPny4U9nw4cMVGhqqJUuW6OjRo5JUJKxJkpubmx5//HHl5+crMTHRUb5gwQJlZ2frkUcecYQ1SapVq5ZefvnlSjoSACg7AhuAq0J4eLhcXJz/ZLm4uCg8PFymaWrr1q2SpJycHMXGxqp9+/by9vaWYRgyDEMDBw6UJB08eNDx+sLX3HbbbUX2d+utt8rNza2yDgcAyoS/RgAsJb/A1Hd7jisz57Qa+ngov+D8WRuNGjUqtn5hud1u15kzZxQZGalNmzbppptu0kMPPaT69evLzc1Ne/fuVUJCgvLy8hyvtdvtkqSGDRsWadfV1VX169ev6MMDgHIhsAGwjKWphzRp0XYdsp92lF13bIck6ciRI8W+prDcZrNp4cKF2rRpk/785z9r5syZTvXmzZunhIQEpzKbzSZJyszMLNJufn6+jh07piZNmpT/gACggjAlCsASlqYe0siPNjmFNUk6nnt+pebyxGQVFBQ4bSsoKNC6detkGIbat2+v9PR0SVL//v2LtP/tt98WKWvfvn2J29avX69z586V72AAoIIR2ABUu/wCU5MWbdellqwf2Ltb06c7X0ttxowZ2rVrl/r27asGDRooKChI0vnrtV0oOTlZM2bMKNJm//795evrq/fff1+7du1ylJ89e1bPPfdc+Q8IACoYU6IAqt13e44XGVm7mEdIR40ePVpLl36t1q1ba9u2bVq0aJH8/Pz01ltvSZLuuusuBQcH67XXXlNqaqratGmjnTt3avHixbrnnnv0+eefO7Vps9k0depUDRs2TJ07d9agQYNks9m0ePFieXp6KiAgoNKOGQDKghE2ANUuM+fSYU2S3Bu30qTp82S32zV16lQlJSVpwIABWr9+vZo1ayZJ8vb21qpVqzRw4EB9//33evvtt3Xw4EHNmTNHTz75ZLHtxsTE6Msvv1RoaKgSEhKUkJCg8PBwffPNN6pdu3aFHicAlBcXzv2PmnLhPcCK1qcf0+AZKZetN3d4F93anJWbAP6rpvx+M8IGoNqFhdRTgM1DRgnbDUkBNg+FhdSrym4BgGUQ2ABUO1cXQ7F33ShJRUJb4fPYu26Uq0tJkQ4Arm0ENgCW0LtNgN4Z2lH+Ng+ncn+bh94Z2lG927AAAEDNxSpRAJbRu02A7rjR3+lOB2Eh9RhZA1DjEdgAWIqri8HCAgC4CFOiAAAAFkdgAwAAsDgCGwAAgMUR2AAAACyOwAYAAGBxBDYAAACLI7ABAABYHIENAADA4ghsAAAAFkdgAwAAsDgCGwAAgMUR2AAAACyOwAYAAGBxBDYAAACLI7ABAABYHIENAADA4ghsAAAAFkdgAwAAsDgCGwAAgMUR2AAAACyOwAYAAGBxBDYAAACLI7ABAABYHIENAADA4ghsAAAAFkdgAwAAsDgCGwAAgMUR2AAAACyOwAYAAGBxBDYAAACLI7ABAABYHIENAADA4ghsAAAAFkdgAwAAsDgCGwAAgMVVeWDLzs7WmDFjFBQUJHd3dwUHB+vZZ5/VyZMny9SOYRglPoYNG1Y5nQcAAKgGblW5s9zcXEVERGjLli3q1auXBg8erM2bN2vKlClKTk7W6tWr5eHhUer2goKCig1nHTp0qLhOAwAAVLMqDWyvvfaatmzZonHjxunVV191lI8fP16TJ0/WG2+8oQkTJpS6veDgYMXFxVVCTwEAAKzDME3TrIodmaap66+/XtnZ2Tp8+LC8vLwc23Jzc+Xv76+GDRsqPT29VO0ZhqGIiAglJSVVSP+ys7Nls9lkt9vl6+tbIW0CAIDKVVN+v6tshC0tLU0HDx5UdHS0U1iTJC8vL4WHh2vZsmXKyMhQYGBgqdo8ceKE3n33XWVlZalevXoKDw9X27ZtS/XavLw85eXlOZ5nZ2eX/mAAAACqUJUGNkkKDQ0tdntoaKiWLVumtLS0Uge2rVu3asSIEU5lvXv3VkJCgho2bHjJ18bHx2vSpEml2g8AAEB1qrJVona7XZJks9mK3V44jFlY73LGjh2rdevWKSsrS9nZ2Vq3bp3uvPNOLV26VP369VN+fv4lXz9hwgTZ7XbHIyMjowxHAwAAUHXKPMI2duxYp6nEyxk9enSJo2pXYsqUKU7Pb731Vi1evFg9evRQcnKyFi5cqHvvvbfE17u7u8vd3b3C+wUAAFDRyhzYpk+frtzc3FLXv++++xQaGuoYWStpBK3wHLKSRuBKw8XFRcOHD1dycrLWrl17ycAGAABwtShzYCvrBW4LFY6yFZ7LdrHLneNWWn5+fpJUplAJAABgZVV2DltoaKgaN26stWvXFglTubm5Wrt2rUJCQkq94KAkGzZskHT+Gm0AAADXgioLbIZh6NFHH9XJkyf14osvOm178cUXdfLkSQ0fPtyp/NSpU9qxY4d+/fVXp/KffvpJZ8+eLbKPdevWafLkyapVq5buv//+ij8IAACAalBlF86Vzo+khYeHa+vWrerVq5c6duyoTZs2afny5ercubOSk5Pl6enpqJ+UlKSoqKgiF8gdNmyYlixZom7duikwMFC1atXStm3btHz5chmGoX/84x96/PHHy9S3mnLhPQAAriU15fe7Sm9N5eXlpeTkZMXFxWn+/PlKTExUQECAxo4dq9jYWKewdin9+/fXiRMntHXrVq1YsUJnzpyRv7+/Bg0apGeeeUZhYWGVfCQAAABVp0pH2KyspiR0AACuJTXl97vKzmEDAABA+RDYAAAALI7ABgAAYHEENgAAAIsjsAEAAFgcgQ0AAMDiCGwAAAAWR2ADAACwOAIbcIX27t0rwzA0bNgwR1lkZKQMw6i+TgEArikENsAikpKSZBiG4uLiqrsrAACLqdJ7iQI1xQcffKBTp05VdzcAANcIAhtQCZo2bVrdXQAAXEOYEgVKKT8/X5MnT1aLFi3k4eGhFi1aKD4+XgUFBUXqFncO2+zZs2UYhmbPnq1FixYpPDxcPj4+Cg4OVlxcnKKioiRJkyZNkmEYjsfevXs1dOhQGYah7777rti+vfDCCzIMQ3Pnzq34AwcAVDtG2IBSeuyxx/T+++8rJCRETz75pE6fPq3XX39d69atK1M7n332mZYvX65+/frpiSeeUHZ2tiIjI7V3714lJCQoIiJCkZGRjvp16tTRiBEjNGfOHM2cOVNhYWFO7eXn52vWrFmqX7++7r333oo4VACAxRDYgFJISkrS+++/r/bt22vt2rXy8vKSJE2cOFEdOnQoU1tLly7VsmXL1LNnzyLbEhISFBkZWWThwW233aYbb7xR8+bN0xtvvOHYf2F7+/fv1zPPPCN3d/dSH09UVJRiY2NZ5AAAVwGmRIFS+OCDDySdn3q8MCw1adJEo0ePLlNb/fv3LzasXc6IESOUk5OjefPmOZXPnDlTkjR8+PAyt1lTcdkVAFcbAhtQClu3bpV0fqTrYsWVXcrFU5ql9ac//Umenp6aMWOGo+zIkSNavHixunbtqhtvvLFc7QIArI/ABpQgv8DU+vRjWrjlgI5k/SYXFxf5+fkVqdeoUaMytVvW+oXq1KmjBx54QBs2bFBqaqqk8wsZzp07x+gaAFzjCGxAMZamHlK3yas0eEaKRs/boqN5LiooKNAn324rUvfIkSOXbW/27Nl6+OGHJanIVFzhBXNnz57tKDMMQ5GRkTpy5IhiYmLk5+cnT09Pff/995LkGGV777335Ovrq/fee0+GYej06dMaP368mjZtKg8PD/3hD3/QtGnTZJpmqY89MzNTf/nLX9SiRQu5u7vLz89PAwcOdITECyUmJuqRRx5Rq1at5O3tLW9vb3Xq1EnvvvtusW1v2rRJ9913n5o2bSp3d3c1aNBAnTt31ssvv3xF7Zb0fnXp0kVJSUlF6iYnJzv+vfBx4Z0qAMBqWHQAXGRp6iGN/GiTLow4tRqG6MyRdD39xlzVqTdKvdsEOLZ9++23FbLfwiCXn58vSTpx4oS6desmm82mhx56SJmZmfrkk09kGIYSEhLUt29fpaWlaeTIkdq+fbsk6YEHHtDmzZs1cOBASdL8+fP19NNPa+/evfq///u/y/YhPT1dkZGR2r9/v3r16qUBAwYoMzNT8+fP17Jly7Ry5UrdcsstjvqTJ0/WL7/8oi5duuiee+7RiRMntHTpUo0YMUI7d+502ueWLVvUtWtXubq6qn///goKCtKJEye0fft2vfvuu/rrX/9arnYLlfR+RUdH64cfflCbNm0kSbGxsZo9e7b27dun2NhYx+vLungEAKqUCdM0TdNut5uSTLvdXt1dQTU6l19gdnnlGzNo3GKnR6NBr5iSzFoNQ8zOcYvMc/kFpmma5v79+00/Pz9TkhkTE+NoJyIiwrzw6zVr1ixTkinJnDVrltM+ExMTTUnmyJEjHe0U1n3iiSfM/Px8R92ZM2c6tjVu3NiUZG7atMmxv1atWpknTpxw1D9x4oTZqlUr0zAM8/vvvy+yz9jYWKe+dO3a1XR1dTWXLl3qVL5z507Tx8fHbNu2rVP57t27i7yHZ8+eNe+44w7T1dXV3Ldvn6N8zJgxpiRzwYIFRV6TlZVV7nZN07zs+zVixAin+hd/PgCuXjXl95spUeAC3+05rkP200XKPYLayattT53N3KPNbzyqocOf1KhRo9ShQwd16dKlQvbt5+enxo0bO1aB1qpVS/Xr11dOTo6jTkxMjFxdXeXi4qKDBw/q5ptv1k033eTY/vzzz8tmszme22w2PffcczJNUwkJCZfc/+bNm7Vu3TrFxMQoOjraaVvLli01fPhw/fTTT05ToyEhIUXacXNz0+OPP678/HwlJiYW2e7p6VmkrH79+k7Py9Oul5eXJk+eLBeX//5Zi4mJkZubm2MqGQCuVkyJAhfIzCka1grV7/2UatVropNbl+nzD99T08DrNWbMGD3wwANavHjxFe/bxcVFX3zxhcaNG6fk5GSdPXtWL774oh555BFHCHNzc5O/v7/sdrtOnjxZZLHBpVaxbt68+ZL7T0lJkXT+nLzirs22Y8cOxz8LpxdzcnI0ZcoULViwQOnp6crNzXV6zcGDBx3//sADD+jNN9/UPffcowcffFB33HGHunfvriZNmhTZV1naLdSyZUt5e3s7lbm5ualRo0Y6ceLEJY8dAKyOwAZcoKGPR4nbDBdX2brcL1uX+zV3eBfd2vy/o0LmRSf1r1yVqO/2HNfCLQfU0MdDBQXnt8+aNeuSJ7ffcsstjkUIERERRU6Yl86HkLy8PHl5eWnw4MFO24pbgVpYZrfbS9yvJB0/flyStGTJEi1ZsqTEeoXh6cyZM4qMjNSmTZt000036aGHHlL9+vXl5ubmuGtDXl5ekWN75ZVX9PHHH2vWrFmSpM6dO2vy5MmOW3OVtd1Cvr6+xfbXzc3NcV4gAFytCGzABcJC6inA5qHD9tMqbl2lIcnf5qGwkHoltrE09ZAmLdruNLXqln5+dOrcuXNF6l8uSF3s999/19mzZ/Xwww8XCSlHjhwpcuP5wlWsF06VFqewrWnTpmnUqFGX7cfChQu1adMm/fnPf3ZcvLfQvHnzip2Cve222/T111/r999/14YNG7Ro0SL985//VN++fZWamqpmzZqVq10AuNZxDhtwAVcXQ7F3nb8A7cXXwS98HnvXjXJ1Kf4q+YUrTC8+Dy7HPH/LqOTNO4q85nJTlYXeeecdTZw4UVlZWTIMQ+PHjy9Sp7gVq4VlF57rVpzC1Z/r168vVX/S09Mlnb9zQ2n6cSFPT09FRkbq//7v/zRx4kT9/vvvWrFixRW3W1qurq6SxMgbgKsGgQ24SO82AXpnaEf525ynR/1tHnpnaEenS3pcKL/A1KRF24sdmavVqIUkQ59/9plyT/3uKE9LS9Nbb71Vqn5NnjxZr732mlxdXeXn51fsifkvvvii04id3W7XSy+9JMMwFBMTc8n2w8LCdMstt2ju3Ln65JNPimwvKChwXL9MkoKCgiRJa9ascaqXnJzsdDeGQuvXr9fp00XPESwcAfTw8ChXu+VRr975EdKMjIwKaQ8AKhtTokAxercJ0B03+uu7PceVmXNaDX3OT4OWNLImlbzCVJLcfOrruhu769T2ZLVtf5PuubuvMjMz9eWXX6p3796aP3/+Zfu0d+9eSVJwcHCJdVq2bKk2bdo4XYdt//79GjNmjDp16nTZfcydO1dRUVEaNGiQ3nzzTXXs2FGenp769ddftX79eh09etQRuu666y4FBwfrtddeU2pqqtq0aaOdO3dq8eLFuueee/T55587tT158mQlJiaqe/fuCgkJkYeHhzZt2qSVK1eqWbNmuueee8rVbnn06NFDn3/+uQYOHKg777xTHh4eat++ve66664rbhsAKgOBDSiBq4vhtLDgci61wlSS6vd+Wq6evvptb4r+8Y9/qFWrVnr33XfVuHHjUgW20vj0008VGxuruXPn6siRIwoJCdHUqVNLdU6adP5yGps3b9brr7+uBQsWaNasWXJ1dVVAQIC6d++u++67z1HX29tbq1at0rPPPqvVq1crKSlJrVu31pw5c9SoUaMiwWrkyJGy2WzasGGDkpOTZZqmmjZtqokTJ+ovf/mL4xy6srZbHsOHD9fevXs1b948TZ48WefOnVNMTAyBDYBlGebFy9tqqOzsbNlsNtnt9hJXmwGXsj79mAbPSLlsvYtXmFaEyMhIRwgCgJqkpvx+cw4bUEEKV5iWNGlqSAq4zApTAACKQ2ADKsiVrjAFAKAkBDagApV3hSkAAJfCOWz/UVPmwFE18gvMMq0wBQCUT035/WaVKFAJyrrCFACAS2FKFAAAwOIIbAAAABZHYAMAALA4AhsAAIDFEdgAAAAsjsAGAABgcQQ2AAAAiyOwAQAAWByBDQAAwOIIbAAAABZHYAMAALA4AhsAAIDFEdgAAAAsjsAGAABgcQQ2AAAAiyOwAQAAWByBDQAAwOIIbAAAABZHYAMAALA4AhsAAIDFEdgAAAAsjsAGAABgcQQ2AAAAiyOwAQAAWByBDQAAwOIIbAAAABZHYAMAALA4AhsAAIDFEdgAAAAsjsAGAABgcQQ2AAAAi6vSwLZlyxZNnDhR0dHRatCggQzDUGRkZLnb+/7779WnTx/VqVNHXl5e6tKliz799NOK6zAAAIAFuFXlzhYsWKD4+HjVrl1bLVu2VFZWVrnbSkxMVHR0tDw8PDRo0CD5+Pho/vz5evDBB5WRkaGxY8dWYM8BAACqj2GapllVO9u2bZvy8vLUtm1bHTt2TAEBAYqIiFBSUlKZ2jl37pxuuOEG7d+/XykpKerQoYMkyW63KywsTHv37tWuXbsUFBRU6jazs7Nls9lkt9vl6+tbpv4AAIDqUVN+v6t0SrR169bq2LGjatWqdUXtrFq1Sunp6RoyZIgjrEmSzWbTxIkTdebMGSUkJFxhbwEAAKzhqlx0UDgi16tXryLboqOjJUnJyclV2SUAAIBKU6XnsFWUtLQ0SVJoaGiRbf7+/vL29nbUKUleXp7y8vIcz7Ozsyu2kwAAABXkqhxhs9vtks5PgRbH19fXUack8fHxstlsjkdgYGCF9xMAAKAilHmEbezYsU4jU5czevToYkfCqtuECRM0ZswYx/Ps7OxrPrRlZ2fr+eef11dffaX9+/fr3Llz2rx5s9N5gKVlGEa5FowAAICyK3Ngmz59unJzc0td/7777qvwwFY4slbSKFp2drbq1q17yTbc3d3l7u5eof2yuv/93//V9OnT1a9fPw0dOlSurq7y9/ev7m4BAIDLKHNgO3nyZGX0o0wKA2BaWppuvvlmp22HDx/WyZMnFRYWVh1ds7TFixerZcuWWrRoUXV3BQAAlMFVeQ5bRESEJGn58uVFti1btsypDv7r4MGDCggIqO5uAACAMrJ0YDt79qx27Nih9PR0p/Lbb79dzZo108cff6wtW7Y4yu12u1555RXVrl1bf/rTn6q4t2V35swZTZs2TdHR0QoMDJS7u7saNmyoe++9V5s3b3bU27p1qwzD0KhRo5xev2DBAhmGIXd3d506dcppW3BwsEJCQiRJw4YNk2EYMk1TycnJMgzD6bZgcXFxMgyj2PPRZs+eLcMwNHv27Ao9dgAAUHpVelmPHTt26NVXX5Uk/f77746yYcOGOepcGAwOHDigP/zhDwoKCtLevXsd5W5ubpo5c6aio6PVvXt3p1tT7du3T1OmTFFwcHAVHNGVOX78uJ555hnddttt6tOnj+rWravdu3frq6++0tdff63Vq1erc+fOateunerXr6/ExESn1xc+P3PmjNauXas77rhDkrRnzx7t27dPDz/8sCRpwIABCg4O1qRJkxQUFOR4v6+G9wgAAEgyq1BiYqIp6ZKPC+3Zs8eUZAYFBRXb3oYNG8zevXubvr6+pqenpxkWFmbOmzevXH2z2+2mJNNut5fr9eVx+vRpc//+/UXKU1NTTW9vb7Nnz56OsnvvvdeUZB4+fNhR1rZtW/O2224za9eubU6YMMFR/t5775mSzA8++MCpXUlmRESEaZqmGRMTY0oy9+zZY8bGxpqSzDfeeMOUZMbGxjpeM2vWLFOSOWvWrGLbioiIKPK5AQBQVarj97s6VOmUaGRkpEzTvOTjQsHBwTJN02l07UJhYWH6+uuvZbfbderUKW3YsEEPPvhgFRxJ+SQlJckwDMXFxUk6v1K1SZMmReq1bt1aUVFRWr16tc6ePStJioqKkvTfUbWsrCylpqaqT58+6tKli1atWuV4fWGdwilPAABwdbP0OWw1wZYtWzRkyBA1bdpUtWvXdpxftmjRIp05c0ZZWVmSiga2pKQkmaapHj16KCoqSj/88INycnIcdZo3b37J68rFx8fr559/LjYwAgAAa7kqb011tcs4fkoLtxzQkbQf9fRD90g6f1/U0NBQeXt7yzAMLViwQFu3bnVcpLh169Zq2LChI7AlJibK19dXN998s37//XdNmjRJ3377rUJDQ3XgwAE9+uijl+xDQEAAK0YBALhKMMJWReLi4hyjZO9P+7sG3HS9RjzQR3l5eRrz8lR99dVXjttlffXVV0pNTZUk3X///frqq68knZ/iTEtL04EDBzRnzhxlZ2dr3759SklJkWEYuvvuuxUTEyPp/ArS4OBgnThxQqNGjXKMth0+fFjSf1eO7t27Vy4u5/8zyM/Pd/R3zZo1ioyM1OOPPy5Jevvtt/XLL7+U6ZgXLlyo22+/XXXr1pWHh4fatGmjKVOmOO0HAABcHoGtilwX1FZebW6XJLkHtpEtfLAMDx/JtbY+yrDpq017FR0drbFjxyo/P1+1a9eWdP7aaf3799fbb7/tCHxz58513OXhqaee0muvvaZGjRrJz8/PsfrWw8NDeXl56tGjh5YvX667775bklSrVq0ifSu8K8TRo0clSSkpKbr99ttls9nUsmVLSdKmTZvUtWtX7d69u1THO2HCBA0YMEA7d+7UvffeqyeeeEKenp569tlnNWjQoHK9hwAA1FQEtiqQX2Dqy8N15N32fGDzaNpWdbr9Ue7+LaT8s8rPOaaRY/+qpKQk/fWvf1XXrl0dwWvZsmXq1KmTxo4dqxtvvFGS9Nprrzna/vHHH7V582aNGjVKR48eVUZGhlq2bClXV1cdPnxYDRs21NatW/WPf/xDklS/fv0i/evcubOk/16IeNmyZZo6darGjx+vn3/+WZL00EMP6ejRoxo9evRlj3fFihV69dVXFR0drZ07d+q9997T66+/ru+++06PP/64Pv/8c82fP7+8bycAADUOga0KfLfnuA7ZTxcp97n5LkmmDn30rA5++5m8fHz11Vdf6bPPPnOs8PT29tYLL7ygM2fO6Mcff1RAQICOHj3quA/qs88+q6ZNmyoqKkoFBQU6duyYYyROOh/uPD09L9m/Ll26KDw83HGx3rp16+qbb75RZGSk7rrrLknn7xwRGhqqJUuWOEbiSvL2229Lkt599115eXk5yg3D0KuvvirDMDR37txLv2kAAMCBRQdVIDOnaFiTpOtahMlvwATZv/1IZ49l6PfcAuXn5+uPf/yjkpOTJUlvvvmm49IeO3bsUFRUlD7++GP5+/tr3759jnumdu7cWd7e3jp58qQiIyO1dOlSeXh4qG3btqXq48KFCzVkyBAtX75c2dnZ2r9/vxYtWqSDBw/qyy+/lIuLi8LDw5WWlqatW7desq2UlBR5eXnp/fffL3a7p6enduzYUap+AQAAAlulyy8wlZWTV+J2r1bhcvWqqyNz/lcFBfnavn27tm/f7tj+1ltvOf49NzdXc+bM0Zw5czRs2DAlJCSoUaNGks6fm1Z4WQ9JGj9+vBo2bCjDMBxlF1/n7kL169fXhAkTtHz5cj377LOKj493bCu8M0JhyLLb7Y62irvW2/Hjx3Xu3DlNmjSpxP3l5uaWuA0AADgjsFWipamHNGnR9mKnQy/k6n6dJOneewdq/vzPy7SPCwNZWbZdypEjRy5ZbrPZLvl6X19fGYbhuIYcAAC4MpzDVkmWph7SyI82OYc14z9vd0HBf4sk1aofqOu8ffTDDxsd05/Vae3atSq4oI+SVFBQoHXr1skwDLVv3/6Sr7/lllt07NgxpaWlVWY3AQCoMQhslSC/wNSkRdt18QSki4ePJOlczn9HnvxtHvrXnzrrqSef0L59+/Q///M/xYa21NRUZWZmVma3HXbt2qUZM2Y4lc2YMUO7du1S37591aBBg0u+/umnn5YkPfLIIzp27FiR7YcPH3asPgUAAJfHlGglKGlVaK3618vVu55yf14tw7WWbu90gzp61dOtgZ0UNWmSNm3apKlTp2rJkiXq3r27GjZsqAMHDuinn37S1q1btX79ejVs2LDS+x8dHa2nn35a//73v9W6dWtt27ZNixYtkp+fn9M5dSXp3bu3nn/+eb344otq0aKFevfuraCgIB07dky//PKLvv32W7300kv6wx/+UOnHAgDAtYARtkpQ0qpQw8VVDe75q9wbt1Luz8la+N6bin3hBf32229yd3fX119/renTp8vf31/z58/Xm2++qdWrVysgIEDvvPNOqVd8XqkuXbpo5cqVstvtmjp1qpKSkjRgwACtX79ezZo1K1Ubf/vb37RixQrddtttWrlypV5//XUtXrxYeXl5iouL0x//+MdKPgoAAK4dhnmppYM1SHZ2tmw2m+x2u3x9fa+orfXpxzR4Rspl680d3kW3Ni96IVsAAFA6Ffn7bWWMsFWCsJB6CrB5qKQ1moakAJuHwkLqVWW3AADAVYrAVglcXQzF3nX+NlIXh7bC57F33ShXl/JddgMAANQsBLZK0rtNgN4Z2lH+Ng+ncn+bh94Z2lG92wRUU88AAMDVhlWilah3mwDdcaO/vttzXJk5p9XQ5/w0KCNrAACgLAhslczVxWBhAQAAuCJMiQIAAFgcgQ0AAMDiCGwAAAAWR2ADAACwOAIbAACAxRHYAAAALI7ABgAAYHEENgAAAIsjsAEAAFgcdzr4D9M0JUnZ2dnV3BMAAFBahb/bhb/j1yoC23/k5ORIkgIDA6u5JwAAoKxycnJks9mquxuVxjCv9UhaSgUFBTp48KB8fHxkGDXj5uzZ2dkKDAxURkaGfH19q7s7KAc+w6sfn+G1gc+x+pimqZycHDVu3FguLtfumV6MsP2Hi4uLrr/++uruRrXw9fXlD8xVjs/w6sdneG3gc6we1/LIWqFrN4oCAABcIwhsAAAAFkdgq8Hc3d0VGxsrd3f36u4KyonP8OrHZ3ht4HNEZWPRAQAAgMUxwgYAAGBxBDYAAACLI7ABAABYHIENAADA4ghsAAAAFkdgqwG2bNmiiRMnKjo6Wg0aNJBhGIqMjCx3e99//7369OmjOnXqyMvLS126dNGnn35acR1GsbKzszVmzBgFBQXJ3d1dwcHBevbZZ3Xy5MkytWMYRomPYcOGVU7na5iK+I7k5eXpb3/7m0JDQ+Xh4aHGjRvrscceU2ZmZiX1Ghe60s9w9uzZl/yuJSUlVV7ncU3i1lQ1wIIFCxQfH6/atWurZcuWysrKKndbiYmJio6OloeHhwYNGiQfHx/Nnz9fDz74oDIyMjR27NgK7DkK5ebmKiIiQlu2bFGvXr00ePBgbd68WVOmTFFycrJWr14tDw+PUrcXFBRUbDjr0KFDxXW6hqqI70hBQYH69++vZcuWqUuXLho4cKDS0tI0c+ZMrVy5UikpKWrQoEEVHE3NVJF/5/r371/s9yo4OLjiOoyawcQ1LzU11fzhhx/MM2fOmIcOHTIlmREREWVu5+zZs2bz5s1Nd3d3c/PmzY7yEydOmC1btjRr165t7t27t+I6DocXXnjBlGSOGzfOqXzcuHGmJPOVV14pdVvl/fxxeRX1HXn//fdNSebgwYPNgoICR/k777xjSjIfe+yxyug+zIr7DGfNmmVKMmfNmlV5nUWNwpRoDdC6dWt17NhRtWrVuqJ2Vq1apfT0dA0ZMsTp/xhtNpsmTpyoM2fOKCEh4Qp7i4uZpqmZM2fK29tbzz//vNO2559/Xt7e3po5c2Y19Q4XqqjvyIwZMyRJ8fHxMgzDUT5ixAg1a9ZMc+bM0e+//17h/Qd/52BdTImi1ArPuejVq1eRbdHR0ZKk5OTkquxSjZCWlqaDBw8qOjpaXl5eTtu8vLwUHh6uZcuWKSMjQ4GBgaVq88SJE3r33XeVlZWlevXqKTw8XG3btq2M7tcoFfEdOX36tDZs2KBWrVopKCjIaZthGLrjjjs0ffp0bdy4UbfddlvFdBwOFf13bvPmzTp27JjOnTun4OBg9ezZU/Xr16+QvqJmIbCh1NLS0iRJoaGhRbb5+/vL29vbUQcV51Lve2H5smXLlJaWVurAtnXrVo0YMcKprHfv3kpISFDDhg2vrMM1WEV8R9LT01VQUHDJz7twXwS2ilfRf+emTp3q9NzT01OxsbEaN27clXUUNQ5Toig1u90u6fzUQHF8fX0ddVBxSvO+X1jvcsaOHat169YpKytL2dnZWrdune68804tXbpU/fr1U35+fsV0vAaqiO9IRX/eKJuK+jsXEhKiadOmadeuXTp16pT279+vDz74QPXq1dP48eM1bdq0Cu03rn2MsF0lxo4dq7y8vFLXHz16dIn/h47qYZXPcMqUKU7Pb731Vi1evFg9evRQcnKyFi5cqHvvvbfC9wvUJBEREYqIiHA8b9KkiR566CF17NhRnTp1UlxcnEaOHCk3N36GUTr8l3KVmD59unJzc0td/7777qvwH/vC/+Ms6f8us7OzVbdu3Qrd57WkvJ9had53qeQRgdJwcXHR8OHDlZycrLVr1xLYyqkiviNV8XmjZJX9d65169bq1q2bvvnmG/3888+cO4pSY0r0KnHy5EmZplnqx5VcGLckF547c7HDhw/r5MmTjOpdQnk/w0u97xeWX+l77+fnJ0llCpVwVhHfkWbNmsnFxaXSP28Uryr+zvFdQ3kQ2FBqhcP7y5cvL7Jt2bJlTnVQcUJDQ9W4cWOtXbu2yB/43NxcrV27ViEhIaVecFCSDRs2SOKCnleiIr4jnp6eCgsL086dO7Vv3z6nbaZpasWKFfLy8lKnTp0qqNe4UGX/ncvPz9fGjRslqcgqYOCSqu6Sb7CC0lw498yZM+bPP/9s/vLLL07lZ8+eNZs1a3bJC0ru2bOncjpew5X1wrm5ubnmzz//bO7bt8+p/McffzTPnDlTpP21a9ea1113nVmrVq0inztKr6zfkYMHD5o///yzeeLECad2uHBu9amoz3Djxo1F2j537pz5P//zP6YkMyoqqrIOAdcoAlsN8PPPP5sxMTFmTEyM+cADD5iSzEaNGjnKYmJinOrv2bPHlGQGBQUVaWvVqlVmrVq1TB8fH3P48OHmmDFjzKCgIFOSOWXKlKo5oBro5MmTZvv27U1JZq9evczx48ebvXr1MiWZnTt3Nk+dOuVUPzExsdhgHhMTY/r5+ZkDBgwwn3rqKXPMmDFmdHS0aRiG6eLiYr7zzjtVeFTXprJ8R2JiYoq9Gn5+fr4ZHR1tSjK7dOlijhs3zhw4cKBpGIYZEhJiZmZmVuER1TwV8RlKMtu1a2cOHTrUHDdunDl8+HCzZcuWpiTz+uuvN9PT06vwiHAtILDVAIU/3pd6XOhSgc00TXPDhg1m7969TV9fX9PT09MMCwsz582bVwVHUrOdOHHCfOaZZ8zAwECzVq1aZtOmTc2xY8ea2dnZReqWFNi++OILs3///mZISIjp5eVl1qpVywwMDDQHDx5sbtiwoYqO5NpX2u9IST/2pmmap0+fNuPi4szmzZubtWvXNv39/c1HH33UPHz4cBUcAa70Mxw7dqwZHh5uNmrUyKxVq5bp5eVltm/f3nzuuefM48ePV9FR4FpimKZpVsHMKwAAAMqJRQcAAAAWR2ADAACwOAIbAACAxRHYAAAALI7ABgAAYHEENgAAAIsjsAEAAFgcgQ0AAMDiCGwAAAAWR2ADAACwOAIbAACAxRHYAAAALO7/AfCU16BrIFEhAAAAAElFTkSuQmCC\n"
          },
          "metadata": {}
        }
      ],
      "source": [
        "plt.rcParams.update({'font.size': 14})\n",
        "plt.scatter(review_vectors[:,0], review_vectors[:,1])\n",
        "for i, txt in enumerate(review_word):\n",
        "    plt.annotate(txt, (review_vectors[i,0], review_vectors[i,1]))"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ypBYfEwvO0c4"
      },
      "source": [
        "## Обучим нейронную сеть с длинным векторным представлением"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "A_MnAfq_Rxev"
      },
      "source": [
        "⏰⏰⏰**Ввод данных 5**"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 42,
      "metadata": {
        "id": "8ETORhRkOtIn"
      },
      "outputs": [],
      "source": [
        "# поменяйте настройки сети: dropout, размер векторного представления в слое Embedding, количество нейронов в полносвязной части сети (можно добавить слой), количество эпох, размер бача\n",
        "model_big = Sequential()\n",
        "model_big.add(Embedding(num_words, 32, input_length=max_review_len))\n",
        "model.add(Dropout(0.4))\n",
        "model_big.add(Flatten())\n",
        "model_big.add(Dense(64))\n",
        "model.add(Dropout(0.8))\n",
        "model_big.add(Dense(1, activation='sigmoid'))"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 43,
      "metadata": {
        "id": "rzds0iUgPLwS"
      },
      "outputs": [],
      "source": [
        "model_big.compile(optimizer='adam',\n",
        "              loss='binary_crossentropy',\n",
        "              metrics=['accuracy'])"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 44,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "3RjBsU8_PSqp",
        "outputId": "1d92c297-bfe6-4717-b149-d9587a86d395"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Epoch 1/3\n",
            "3938/3938 [==============================] - 101s 25ms/step - loss: 0.2326 - accuracy: 0.9058 - val_loss: 0.1774 - val_accuracy: 0.9331\n",
            "Epoch 2/3\n",
            "3938/3938 [==============================] - 27s 7ms/step - loss: 0.1884 - accuracy: 0.9269 - val_loss: 0.1794 - val_accuracy: 0.9300\n",
            "Epoch 3/3\n",
            "3938/3938 [==============================] - 23s 6ms/step - loss: 0.1425 - accuracy: 0.9460 - val_loss: 0.2055 - val_accuracy: 0.9211\n"
          ]
        }
      ],
      "source": [
        "history = model_big.fit(x_train,\n",
        "                    y_train,\n",
        "                    epochs=3,\n",
        "                    batch_size=128,\n",
        "                    validation_split=0.1)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 45,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 460
        },
        "id": "D87iUZmNP0rk",
        "outputId": "917fb9f8-5a36-46d4-93cd-ffd233982cba"
      },
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "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w4fLde7K3pOA8Pf3F/n5+br9MTExwsXFRSiVShEbG6vbP2vWLAGIZ599Vu99curUKWFhYSEcHR1FRkaGbn9Ne9+OHz9eAGLGjBl6+Wg/p5o0aSJUKpVe/v7+/gbP5/LlywUgli9frttX0nOsZez1Wblype6eKP78R0dHCxcXF2FmZiauXr1qcN4hQ4YIwOB5atu2rRg6dKjR+6wk5b1nEzPzRFhsmjgTkyr+PhEuUjL135sl3bPa/AGxfft2vcfMmzdPAHqva2W+lyp6H//4448CEOPHjxcFBQW6/fn5+WLQoEECECdPniz1eSsx9rhDenq6AER6enqp6YQQQjY1PoASExMxMzPD3t6+XOmDg4O5evUqTzzxhEHb+8cff4yTkxNr1qzR1aRpaauSy1OzlpOjqXVs2bJlucpUUUVFmqHLderU0e3btm0bUVFRTJs2jXbt2uml7969O0OGDOGvv/4iIyND75ipqSmff/65XjNf69atef7550lMTOSvv/66J9dQXp988gmdOnVi3rx5LFq0iHfeeQcfHx+WLFlSrsdfv36dffv20bJlS15++WW9Y6+88grNmzdn7969xMTEVGm5jb1GSUlJrFu3jt69ezNhwgS99G5ubkybNo3ExMQSm4vKou3TOHPmTBwcHHT769SpQ1BQEIDRpprylL2qeXl5YWqq3xlZoVDw+uuvA1T6OaiIzz//HAsLC93fDRo0YMqUKeTn5/Pbb7/p9q9cuRJzc3O++OILvfdJu3btGDt2LGlpaWzatKnM81XH+7agoIC1a9fi7OzMhx9+qJfHgAED6NevH1euXNFrMnVzczNogq9K2vv0q6++0nv+vby8ePPNNykqKuLXX381eNygQYNo0KAB33//vW7fsWPHCA0N1dUsVaW8QhU303JRC4GdpTk927egjq2lXpqy7tnAwEAGDBigt2/KlCk0bNiQ7du362rGKvu9BOW/j7/77jtsbGz43//+p2s9ALCwsOCzzz4DKLGJ8l568Jsaza3h/ZvVXYqymVtXSTYqlYqEhARcXV0xMSlf3Hz69GkAo30BbG1t6dixI7t37+bSpUv4+fnpjmk/+CwtLQ0ed6d27dphamrKsmXL6NevH48++qiuqbEyVqxYwf79+1GpVFy+fJk///yT/v37M2LECF2aY8eOAXDp0iVmzpxpkEd8fDxqtZrLly/T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\n"
          },
          "metadata": {}
        }
      ],
      "source": [
        "plt.plot(history.history['accuracy'],\n",
        "         label='Доля верных ответов на обучающем наборе')\n",
        "plt.plot(history.history['val_accuracy'],\n",
        "         label='Доля верных ответов на проверочном наборе')\n",
        "plt.xlabel('Эпоха обучения')\n",
        "plt.ylabel('Доля верных ответов')\n",
        "plt.legend()\n",
        "plt.show()"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 46,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "MkFvNfFPcaPX",
        "outputId": "dc889323-d729-4f1b-8444-f110fac9817a"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "1188/1188 [==============================] - 3s 3ms/step - loss: 0.2380 - accuracy: 0.9103\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[0.2379736304283142, 0.9103420972824097]"
            ]
          },
          "metadata": {},
          "execution_count": 46
        }
      ],
      "source": [
        "model_big.evaluate(x_test, y_test, verbose=1)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "_rpc1SbSdZJi"
      },
      "source": [
        "## Оцениваем тональность на собственном отзыве"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "DkJy7OjTSb0H"
      },
      "source": [
        "⏰⏰⏰**Ввод данных 6**"
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "text = '''Despite the common belief that this restaurant is outstanding,\n",
        "I find this point of view a sweeping generalization.\n",
        "Personally, I find this restaurant quite below the expectations if not to say pathetic.\n",
        "Poor service combined with absolutely ordinary cuisine makes me feel puzzled regarding such an overrated evaluation.\n",
        "'''"
      ],
      "metadata": {
        "id": "PW_dTkDB_hTY"
      },
      "execution_count": 52,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "sequence = tokenizer.texts_to_sequences([text])\n",
        "sequence"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "R3CDjjNB_jFY",
        "outputId": "9ec84371-cc60-4947-c74f-21f4a52b8107"
      },
      "execution_count": 53,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[[1119,\n",
              "  1,\n",
              "  2153,\n",
              "  7520,\n",
              "  13,\n",
              "  16,\n",
              "  104,\n",
              "  11,\n",
              "  1237,\n",
              "  3,\n",
              "  185,\n",
              "  16,\n",
              "  404,\n",
              "  7,\n",
              "  653,\n",
              "  5,\n",
              "  1546,\n",
              "  3,\n",
              "  185,\n",
              "  16,\n",
              "  104,\n",
              "  334,\n",
              "  1413,\n",
              "  1,\n",
              "  1214,\n",
              "  39,\n",
              "  22,\n",
              "  4,\n",
              "  145,\n",
              "  3188,\n",
              "  564,\n",
              "  52,\n",
              "  3676,\n",
              "  18,\n",
              "  495,\n",
              "  3357,\n",
              "  1593,\n",
              "  472,\n",
              "  32,\n",
              "  249,\n",
              "  8689,\n",
              "  2928,\n",
              "  381,\n",
              "  59,\n",
              "  3169]]"
            ]
          },
          "metadata": {},
          "execution_count": 53
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "data = pad_sequences(sequence, maxlen=max_review_len)\n",
        "data"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "fxXg5naY_myn",
        "outputId": "22094ebf-4495-4170-d511-390c58cb998f"
      },
      "execution_count": 54,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([[   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,\n",
              "           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,\n",
              "           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,\n",
              "           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,\n",
              "           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,\n",
              "        1119,    1, 2153, 7520,   13,   16,  104,   11, 1237,    3,  185,\n",
              "          16,  404,    7,  653,    5, 1546,    3,  185,   16,  104,  334,\n",
              "        1413,    1, 1214,   39,   22,    4,  145, 3188,  564,   52, 3676,\n",
              "          18,  495, 3357, 1593,  472,   32,  249, 8689, 2928,  381,   59,\n",
              "        3169]], dtype=int32)"
            ]
          },
          "metadata": {},
          "execution_count": 54
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "result = model.predict(data)\n",
        "result"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "nC5LPTr1_pqf",
        "outputId": "f4713287-facb-4e39-8148-4c27f2fcc4e3"
      },
      "execution_count": 55,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "1/1 [==============================] - 0s 23ms/step\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([[0.00218903]], dtype=float32)"
            ]
          },
          "metadata": {},
          "execution_count": 55
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "if result < 0.5:\n",
        "    print('Отзыв отрицательный')\n",
        "else:\n",
        "    print('Отзыв положительный')"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "TaortUza_tIK",
        "outputId": "fe328955-68bb-4520-e84d-8fdfaa5cb437"
      },
      "execution_count": 56,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Отзыв отрицательный\n"
          ]
        }
      ]
    }
  ],
  "metadata": {
    "accelerator": "GPU",
    "colab": {
      "provenance": [],
      "gpuType": "T4"
    },
    "kernelspec": {
      "display_name": "Python 3",
      "name": "python3"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}